"""
1.创建一个函数，用于模拟文件拷贝
2.创建一个进程池，长度3（表示进程池中最多能够创建3个进程）
3.先用进程池同步方式拷贝文件
4.再用进程池异步工作方式拷贝文件
"""
import time
import multiprocessing

# 1.创建一个函数，用于模拟文件拷贝
def copy_work():
    print("正在拷贝文件....",multiprocessing.current_process())
    time.sleep(0.5)


# # 同步：按顺序执行
# if __name__ == '__main__':
#     # 2.创建一个进程池，长度为3 （表示进程池中最多能够创建3个进程）
#     # 进程池，分两步：
#     # 1)导入模块
#     # 2）创建进程池 multiprocessing.Pool(2) 表示最大允许创建2个进程
#     Pool = multiprocessing.Pool(2)

#     for i in range(10):
#         # 3. 先用进程池(同步)方式拷贝文件
#         # Pool.apply(copy_work,(传递给函数的参数1,参数2，...))
#         Pool.apply(copy_work)


# 异步：不按顺序执行
if __name__ == '__main__':
    # 2.创建一个进程池，长度为3 （表示进程池中最多能够创建3个进程）
    # 进程池，分两步：
    # 1)导入模块
    # 2）创建进程池 multiprocessing.Pool(2) 表示最大允许创建2个进程
    Pool = multiprocessing.Pool(2)

    for i in range(10):
        # 4.异步调用分两步:
        # 1):Pool.close() # 表示不再接收新的任务
        # 2):Pool.join() # 表示让主进程等待进程池执行完 再退出join()
        # Pool.apply_async(函数名,(参数1，参数2))
        # Pool.close()
        # Pool.join()
        Pool.apply_async(copy_work)
        
# Pool.close() 表示 不再接收新的任务
Pool.close()
# Pool.join() 让主进程等待  进程池执行节后后再退出
Pool.join()


